//#include <iostream>
//#include <map>
//using namespace std;
//
//map<string, int> mp;
//
//bool check(char ch)
//{
//	if ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
//	{
//		return true;
//	}
//	else return false;
//}
//
//int main()
//{
//	int n, p;
//	cin >> n >> p;
//	for (int i = 0; i < n; i++)
//	{
//		string s; int x;
//		cin >> s >> x;
//		mp[s] = x;
//	}
//	
//	char ch;
//	string s = "";
//	int ret = 0;
//	while (scanf("%c", &ch) != EOF)
//	{
//		if (check(ch)) s += ch;
//		else
//		{
//			ret += mp[s];
//			s = "";
//		}
//	}
//	
//	cout << ret % p << endl;
//	
//	return 0;
// } 



//#include <iostream>
//#include <set>
//using namespace std;
//
//const int INF = 1e7 + 10;
//
//int main()
//{
//	int n; cin >> n;
//	int ret; cin >> ret;
//	
//	set<int> mp;
//	mp.insert(ret);
//	mp.insert(-INF);
//	mp.insert(INF);
//	
//	for (int i = 2; i <= n; i++)
//	{
//		int x; cin >> x;
//		
//		auto it = mp.lower_bound(x);
//		auto tmp = it;
//		--tmp;
//		ret += min(abs(*it - x), abs(*tmp - x));
//		mp.insert(x);
//	}
//	
//	cout << ret << endl;
//	
//	return 0;
// }



#include <iostream>
#include <set>
using namespace std;

const long long INF = 1e10 + 10; 

set<long long> mp;

int main()
{
	int n; cin >> n;
	
	mp.insert(INF);
	mp.insert(-INF);
	
	while (n--)
	{
		int op; cin >> op;
		
		if (op == 1)
		{
			long long x; cin >> x;
			
			if (mp.count(x)) cout << "Already Exist" << endl;
			else mp.insert(x);
		}
		else
		{
			long long x; cin >> x;
			
			if (mp.size() == 2)
			{
				cout << "Empty" << endl;
			}
			else
			{
				auto it = mp.lower_bound(x);
		
				if (*it == x)
				{
					cout << x << endl;
					mp.erase(x);
				}
				else
				{
					auto tmp = it;
					tmp--;
					if (abs(*it - x) >= abs(*tmp - x))
					{
						cout << *tmp << endl;
						mp.erase(*tmp);
					}
					else
					{
						cout << *it << endl;
						mp.erase(*it);
					}
				}
			}
		}
	}
	
	return 0;
}
